home *** CD-ROM | disk | FTP | other *** search
Text File | 1989-03-07 | 5.4 KB | 139 lines | [TEXT/KAHL] |
- O.I.C Objects-in-C
- ===================
-
- Shareware V1.02 Release Notes
- -----------------------------
-
- Copyright © John Wainwright, 1989
-
- 454 West 20th Street, #2
- New York, NY 10011
-
- Compuserve : 72657,2534
-
- All rights reserved
-
-
-
- OIC version 1.01 is a primarily a bug fix release along with some
- cosmetic & housekeeping adjustments to better accomodate the
- class kits under development (like Lisp & User Interface).
-
- All the files have changed, some only cosmetically, but it is
- advised that they all be adopted. You can either replace the
- source files in your current projects or add your files to
- the distributed v1.01 project.
-
- Some of the changes may require you to recode bits of your current
- work but this has been kept to a minimum. In particular :
-
- - in anticipation of the Lisp stuff, the name of the method "eq"
- has been changed to "equal" to be consistent Lisp conventions.
- In Lisp, "eq" means same object (i.e. == in OIC) whereas
- "equal" means isomorphically equal structures which is what I
- used to call "eq" in V1.0 OIC. Just globally replace "eq("
- with "equal(".
-
- - the standard I/O has been made object-oriented, mainly to
- centralize it. A minimal class StdioStream has been added
- that implements the generic "gprintf". Two global instances
- of StdioStream called "screen" and "error" are created during
- the class's initialization, both of which just output to
- stdout. Again, this doesnt add any functionality yet, but
- makes it easier for people who want to use their own I/O
- to add it in one place. You can continue to use the standard
- C I/O, of course, but if you want to use StdioStream, you
- need to change "printf(" to "gprintf(screen, " and
- "fprintf(stderr" to "gprintf(error" throughout. The UI
- class kit will come with a generalized stream support that
- uses gprintf and will provide multiple, scrollable text windows,
- with file backing, editability, etc.
-
- - the file names of the class source files have been capitalized
- to be consistent with the convention that class names are
- capitalized.
-
- A simple NameSpace class kit has been added, which you might find
- useful. An extra include file called "names.h" declares externals
- for this little kit. Look at the sources for details.
-
- Some tips on using the THINK LSC debugger with OIC have been added to the
- manual.
-
- Below is a brief list of the changes. Where appropriate the OIC manual
- has been upgraded to reflect these changes (marked with change bars in
- the document).
-
-
- • Alphabetized generics lists (generics.h & .c)
-
- • Removed redundant free(seq) from deepInstances in IndexMixin.c
-
- • Accessing deep inherited IV's bug fixed (oic.c)
-
- • IsAKindOf() bug fixed (oic.c)
-
- • _subs() subclasses method bug fixed (class.c)
-
- • Added hashOf to String method for HashTable operation
-
- • Changed the name of generic "eq" to "equal"
-
- • Installed 'cantDo' mechanism. If a method can't be found,
- invokes 'cantDo' which is handled in default by Object
- which prints an error message. String specializes
- 'cantDo' for testing. Added primitive "CanYouDo".
-
- • Added 'ApplyMethod' primitive to OIC manager.
-
- • Added DependentsMixin class to provide change notification
- system. (sometimes called "active-value" programming).
-
- • Added a #define for "method" to "static". Changed all methods
- in example classes to declare themselves "method" not "static" -
- i.e. a cosmetic change.
-
- • Modified generic table structure to allow the keeping of a
- list of all generics. Added the "generic" typedef being a
- pointer to such a table. (oic.c & .h)
-
- • Added conditionally compilable code to the method dispatching
- functions that will ignore generics invoked on NULL.
-
- • Added "forAll" as a synonym for "map" in Object.
- Added "forAllGen" which maps a generic (specified as a
- generic table reference) over a sequence with arguments.
- Made "forAll" (& "map") pass optional arguments (in a very
- inelegant way). Added specialisations of "forAll" &
- "forAllGen" to List to make them much more efficient
- (it used to inherit the slow old ways from Object).
-
- • Added "SuperFrom" primitive to complement "Super". This
- takes an extra class argument which says explicitly from which
- ancestor the method should be inherited.
-
- • Added "IVs" macro. This gets the IV structure pointers for ANY
- object.
-
- • Fixed nasty "srealloc" bug in memory.c.
-
- • Added "StdioStream" class and changed all error messages
- & debugging printing to use print generics on this stream
- class rather than C library I/O. This factors the error/
- debugging I/O into one simple class.
-
- • Made "dispose" in Object invalidate the object so it wont respond
- to generics any more. All classes should eventually Super this
- method.
-
-
- All the best!
-
- John Wainwright
- 454 West 20th Street, #2
- New York, NY 10011
-
- Compuserve : 72657,2534
-
-
- All OIC files & documentation are Copyright © John Wainwright, 1988, 1989